docker

您所在的位置:网站首页 docker mysql57 配置文件 docker

docker

2023-08-08 06:22| 来源: 网络整理| 查看: 265

docker-compose.yml 中设置了 mysql 的 root 密码未生效 问题解决方案注

问题

使用docker-compose创建mysql服务器时,docker-compose.yml配置如下:

version: '3.0' services: mysql: restart: always image: mysql:5.7.23 container_name: mysql ports: - 3306:3306 environment: TZ: Asia/Shanghai MYSQL_ROOT_PASSWORD: rootpwd MYSQL_USER: user MYSQL_PASS: userpwd command: --character-set-server=utf8mb4 --collation-server=utf8mb4_general_ci --explicit_defaults_for_timestamp=true --lower_case_table_names=1 --max_allowed_packet=128M --sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO" volumes: - /home/mysql/data:/var/lib/mysql - /home/mysql/conf/my.cnf:/etc/my.cnf:ro - /home/mysql/init:/docker-entrypoint-initdb.d/

在相应目录下运行

docker-compose up -d

再进入容器内部

docker exec -it mysql /bin/bash

尝试登陆mysql

[root@i ~]# mysql ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: NO)

发现并不能登陆mysql,出现的问题在于docker-compose中的密码设置无效,导致用户无法登陆。

解决方案

1、修改my.cnf 文件,在[mysqld]下添加

skip-grant-tables

2、进入容器内部登陆mysql

[root@i ~]# docker exec -it mysql /bin/bash

3、登陆mysql

[root@/ ~]# mysql mysql>

4、修改root用户密码

mysql>update mysql.user set authentication_string=password('xxxx') where user='root';

注:mysql 4.6版本以上的mysql服务器password改为authentication_string;所以用‘update mysql.user set password=password(‘xxxx’) where user=‘root’;’无法修改用户密码,切记!!!!!!!! 5、退出登陆,并删除my.cnf文件中的‘skip-grant-tables’ 6、重启mysql

docker restart mysql

7、重新登陆,登陆成功!

mysql 4.6版本以上的mysql服务器password改为authentication_string;所以用‘update mysql.user set password=password(‘xxxx’) where user=‘root’;’无法修改用户密码,切记!!!!!!!! 提醒下用户user的密码设置也无效,请重新设置!!



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3